package edu.gduf.utils;


import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;

/**
 * @author 谢佳豪
 * @data 2020/8/28 - 0:06
 * @target 上传文件并保存本地的工具类
 */
public class FileUtil {

    /**
     * 文件真实路径
     */
    private static String realPath;

    /**
     * 执行文件上传
     * @param file 文件
     * @param request 请求对象
     * @return 返回文件所保存的真实路径
     */
    public static String fileUpload(MultipartFile file, HttpServletRequest request) {
        //判断上传文件是否存在
        if (!file.isEmpty()){
            //获取上传文件的初始名称
            String originalFilename = file.getOriginalFilename();
            //获取最后一个.的位置
            int lastIndexOf = originalFilename.lastIndexOf(".");
            //获取文件的前缀
            String prefix = originalFilename.substring(0,lastIndexOf);
            //获取文件的后缀
            String suffix = originalFilename.substring(lastIndexOf);
            //设置上传文件的保存地址目录
            File path = null;
            path = new File(FileUtil.class.getResource("/").getPath());
            String dirPath = path + "\\upload\\";
            File filePath = new File(dirPath);

            //如果保存地址目录不存在，则创建此目录
            if (!filePath.exists()){
                filePath.mkdirs();
            }
            //使用UUID作为后缀，防止文件上传重名（初始名称+UUID）
            String newFilename =  prefix + "_" + UUID.randomUUID().toString() + "." + suffix;

            realPath = dirPath + newFilename;

            //将文件上传到指定的位置
            try {
                file.transferTo(new File(realPath));
            } catch (Exception e){
                e.printStackTrace();
                return "";
            }
        }
        return realPath;
    }

    /**
     * 读取完数据后 删除该上传的文件
     * @param filePath
     */
    public static void fileDelete(String filePath){
        File file = new File(filePath);
        if(file.exists() && file.isFile()){
            file.delete();
        }
    }
}
